package com.vanward.mes.scan.mapper;

import com.vanward.mes.scan.dto.ScanResultDTO;
import com.vanward.mes.scan.dto.WorkOrderStatsDTO;
import com.vanward.mes.scan.dto.WorkshopLineTreeDTO;
import com.vanward.mes.scan.entity.Lot;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;

/**
 * 批次信息Mapper接口
 */
@Repository
public interface LotMapper extends BaseMapper<Lot> {
    
    /**
     * 根据条码查询批次相关信息
     * @param barcode 条码编号
     * @return 扫码结果DTO
     */
    ScanResultDTO selectLotInfoByBarcode(@Param("barcode") String barcode);
    
    /**
     * 更新批次开始时间和状态（上线扫码）
     * @param barcode 条码编号
     * @return 更新影响行数
     */
    int updateLotStartTimeAndStatus(@Param("barcode") String barcode);
    
    /**
     * 更新批次结束时间和状态（下线扫码）
     * @param barcode 条码编号
     * @return 更新影响行数
     */
    int updateLotEndTimeAndStatus(@Param("barcode") String barcode);
    
    /**
     * 更新工单完成数量
     * @param barcode 条码编号
     * @return 更新影响行数
     */
    int updateWorkOrderFinishedQty(@Param("barcode") String barcode);
    
    
    
    /**
     * 更新工单状态为已完成
     * @param barcode 条码编号
     * @return 更新影响行数
     */
    int updateWorkOrderStatus(@Param("barcode") String barcode);
    
    /**
     * 根据条码查询批次ID
     * @param barcode 条码编号
     * @return 批次ID
     */
    Long selectIdByBarcode(@Param("barcode") String barcode);
    
    /**
     * 插入批次完工日志
     * @param barcode 条码编号
     * @return 插入影响行数
     */
    int insertLotFinishedLog(@Param("barcode") String barcode);
    
    /**
     * 插入事件记录
     * @param barcode 条码编号
     * @return 插入影响行数
     */
    int insertEvent(@Param("barcode") String barcode);
    
    /**
     * 查询工单统计信息
     * @param barcode 条码编号
     * @return 工单统计信息DTO
     */
    WorkOrderStatsDTO selectWorkOrderStatsByBarcode(@Param("barcode") String barcode);
    
    /**
     * 查询车间产线树结构
     * @return 车间产线树结构列表
     */
    List<WorkshopLineTreeDTO> selectWorkshopLineTree();
}
